什麼是 API? SOAP? 其他 HTTP API?


Posted by YongChenSu on 2020-12-06

API 是什麼?為什麼需要它?

API (Application Programing Interface),應用程式介面

當別人想要跟你要東西時,因不會直接把資料庫的權限給對方,是根據 API (介面) 讓對方可存取資料,也可限制對方資料的存取權限。而當自己想跟對方要資料時也是透過 API。故透過 API 可讓雙方交換資料

API 與 Web API (HTTP API) 的差異?

API 不見得需要網路。Web API 則一定需要網路,通常指的是 HTTP API,因透過 HTTP 的形式故稱之。除了 HTTP API 以外,還有許多 protocol 也能進行資料交換。

SDK (software development kit):軟體開發套件。

其他 API

如何串接 API?

拿到 API 資料

// api.js 
const request = require('request')

request(
  'https://reqres.in/api/users',
  function (error, response, body) {
    console.log(body)
  }
)

node api.js 後即可拿到返回的資料。

引入 process (node 內建的模組)

argv 裡的數字指的是元素的 index,node api.js 3 後即可拿到 users/3 的資料。

const request = require('request')
const process = require('process')

request(
  'https://reqres.in/api/users/' + process.argv[2],
  function (error, response, body) {
    console.log(body)
  }
)

用 post 的方式新增 user

而這邊因為是測試用,故不會真的寫入,但顯示的訊息是有成功寫入的。

const request = require('request')
const process = require('process')

request.post(
  { url: 'https://reqres.in/api/users',
  form: {
      name: 'yc',
      job: 'none',
    }
  },
  function (error, response, body) {
    console.log(body)
  }
)

id 為 513

delete

statusCode:204 代表刪除成功,沒有東西回應。
console.log(body) 的結果是空的。

const request = require('request')
const process = require('process')

request.delete(
  'https://reqres.in/api/users/2',
  function (error, response, body) {
    console.log(response.statusCode)  // 204
    console.log('body:', body)  // 空的
  }
)

patch

修改成功 name 變成 hello。

const request = require('request')
const process = require('process')

request.patch(
  {
    url: 'https://reqres.in/api/users/2',
    form: {
      name: 'hello'
    }
  },
  function (error, response, body) {
    console.log(response.statusCode)  // 200
    console.log(body)  // {"name":"hello","updatedAt":"2020-07-01T12:40:27.402Z"}
  }
)

SOAP

Simple Object Access Protocol

除了 API 以外還有其他種跟伺服器溝通的方式,SOAP,資料交換都透過 XML。

node-soap

因不會都自己寫 XML,故透過 node-soap 的幫助:A Soap client and server for node.js,解析底層的 XML 格式,使其變好用一點。

endpoint?

在 SOAP 中,endpoint 是指 URL。web 服務監聽器通過監聽該 URL,獲取請求。

SOAP 以外的 HTTP API

大多數的 Web API 是 HTTP API。

RESful 是什麼?

它不是一個協定,是一種風格,是一種建議。

API 使用說明 (不符合 RESTful)

delete 刪除是良好習慣但不是規範,故可用 POST 模擬刪除功能,但壞處是不同工程師有不同命名方式,例如 new_user, created_user, created_new_user。

API 使用說明 (符合 RESTful)

只要符合 RESTful 風格即可稱為 RESTful API

參考資源


#程式導師實驗計畫第四期 #前端 #API #SOAP







Related Posts

Hacktoberfest 2020 參與心得分享

Hacktoberfest 2020 參與心得分享

The prototype chain in JavaScript

The prototype chain in JavaScript

How to build CICD with Jenkins as code based on container

How to build CICD with Jenkins as code based on container


Comments